// 用户模块

import { User, UserProfile } from '@/types/data'
import { UserAction } from '@/types/store'

type UserState = {
  user: User
  profile: UserProfile
}

const initialState = {
  user: {}, // 用户自己的信息
  profile: {}, // 用户的描述信息
} as UserState // 就不用初始化每一个字段了

export const user = (state = initialState, action: UserAction): UserState => {
  // 用户信息数据处理
  if (action.type === 'user/getUser') {
    return {
      ...state,
      user: action.payload,
    }
  }
  // 用户描述信息处理,注意这里发生了类型收缩，因为上面处理了一个类型，处理过的不再提示
  if (action.type === 'user/getUserProfile') {
    return {
      ...state,
      profile: action.payload,
    }
  }

  // 更新用户描述信息
  if (action.type === 'user/updateProfile') {
    console.log(state, action)
    return {
      ...state,
      // 因为这里是生成新的对象，所以要一层一层重新覆盖原来的值
      profile: {
        ...state.profile,
        ...action.payload,
      },
    }
  }

  return state
}
